package br.com.Dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import br.com.Conexao.conexao;
import br.com.Modelo.Produto;
import br.com.Modelo.UsuarioCliente;
import br.com.Modelo.UsuarioComerciante;

public class ProdutoDao {

	  private Connection connection;

	    public ProdutoDao() {
	      this.connection = new conexao().getConnection();
	    }
	     
		 public void adiciona(Produto produto) {
		    	
		    	
		    		
			    String sql = "insert into produto " +
			            "(id_produtoComerciante,tipo_produto,tipo_preco_produto,descricao_produto,preco_normal_produto,preco_promocao_produto,nome_produto,imagem_produto)" +
			            " values (?,?,?,?,?,?,?,?)";
			    System.out.print("entrou aqui");
			    try {
			        // prepared statement para inserção
			        PreparedStatement stmt = (PreparedStatement) connection.prepareStatement(sql);
	               System.out.print("entrou aqui");
			        // seta os valores

			        stmt.setLong(1,produto.getId_produtoComerciante());
			        stmt.setString(2,produto.getTipo_produto());
			        stmt.setInt(3,produto.getTipo_preco_produto());
			        stmt.setString(4,produto.getDescricao_produto());
			        stmt.setDouble(5,produto.getPreco_normal_produto());
			        stmt.setDouble(6,produto.getPreco_promocao_produto());			      		      
			        stmt.setString(7,produto.getNome_produto());
			        stmt.setString(8,produto.getImagem_produto());

			   

			        // executa
			        stmt.execute();
			        System.out.print("add com sucesso");
			       // stmt.close();
			    } catch (SQLException e) {
			        throw new RuntimeException(e);
			    }
		    	
			}
	    
	    public Produto getProdId(Long id_prod){
	      	
	      	PreparedStatement stmt;
	    		try {
	    			stmt = (PreparedStatement) this.connection.prepareStatement("select * from  produto a  where a.id_produto='"+id_prod+"'");
	    			ResultSet rs= stmt.executeQuery();
	    			
	    			while(rs.next()){
	    			     
	    			    Produto produto = new  Produto();
	    			  
	    			    
	    			    produto.setId_produto(rs.getLong("id_produto"));
	    			    produto.setId_produtoComerciante(rs.getLong("id_produtoComerciante"));
	    			    produto.setTipo_produto(rs.getString("tipo_produto"));
	    			    produto.setTipo_preco_produto(rs.getInt("tipo_preco_produto"));
	    			    produto.setDescricao_produto(rs.getString("descricao_produto"));
	    			    produto.setPreco_normal_produto(rs.getDouble("preco_normal_produto"));
	    			    produto.setPreco_promocao_produto(rs.getDouble("preco_promocao_produto"));
	    			    produto.setNome_produto(rs.getString("nome_produto"));
	    			    produto.setImagem_produto(rs.getString("imagem_produto"));
	    			
	    		          return produto;
	    			     
	    		        }
	    			
	    		} catch (SQLException e) {
	    			// TODO Auto-generated catch block
	    			e.printStackTrace();
	    		}
	    		
	    		
	      	
	    		return null;
	      	
	      	
	      	
	      }
	      
	    public List<Produto> getListProduto(){
	    	ArrayList<Produto> produtos = new ArrayList<>();	
	    	
	    	try{
	    				    	
		    	PreparedStatement stmt;	    		
	    		stmt = (PreparedStatement) this.connection.prepareStatement("select * from produto");
    			ResultSet rs= stmt.executeQuery();
	    		while(rs.next()){
	    			Produto produto = new Produto();	    			
	    			 produto.setId_produto(rs.getLong("id_produto"));
	    			 produto.setId_produtoComerciante(rs.getLong("id_produtoComerciante"));
	    			 produto.setTipo_produto(rs.getString("tipo_produto"));
	    			 produto.setTipo_preco_produto(rs.getInt("tipo_preco_produto"));
	    			 produto.setDescricao_produto(rs.getString("descricao_produto"));
	    			 produto.setPreco_normal_produto(rs.getDouble("preco_normal_produto"));
	    			 produto.setPreco_promocao_produto(rs.getDouble("preco_promocao_produto"));
	    			 produto.setNome_produto(rs.getString("nome_produto"));
	    			 produto.setImagem_produto(rs.getString("imagem_produto"));
	    			
	    			 produtos.add(produto);
	    			
	    		}
	    		rs.close();
				stmt.close();
				return produtos;	
	    		
	    	} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
	    
	    	   try {
					connection.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			return null;
	    	
	    	
	    }
	    
public List<Produto> getProdCategoria(String categoria){
	      	
	ArrayList<Produto> produtos = new ArrayList<>();	
	
	try{
				    	
    	PreparedStatement stmt;	    		
		stmt = (PreparedStatement) this.connection.prepareStatement("select * from produto where tipo_produto='"+categoria+"'");
		ResultSet rs= stmt.executeQuery();
		while(rs.next()){
			Produto produto = new Produto();	    			
			 produto.setId_produto(rs.getLong("id_produto"));
			 produto.setId_produtoComerciante(rs.getLong("id_produtoComerciante"));
			 produto.setTipo_produto(rs.getString("tipo_produto"));
			 produto.setTipo_preco_produto(rs.getInt("tipo_preco_produto"));
			 produto.setDescricao_produto(rs.getString("descricao_produto"));
			 produto.setPreco_normal_produto(rs.getDouble("preco_normal_produto"));
			 produto.setPreco_promocao_produto(rs.getDouble("preco_promocao_produto"));
			 produto.setNome_produto(rs.getString("nome_produto"));
			 produto.setImagem_produto(rs.getString("imagem_produto"));
			
			 produtos.add(produto);
			
		}
		rs.close();
		stmt.close();
		
		
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	
	   try {
			connection.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	return (produtos == null ? null : produtos);
		
}


public List<Produto> getProdNome(String nome){
  	
	ArrayList<Produto> produtos = new ArrayList<>();	
	
	try{
				    	
    	PreparedStatement stmt;	    		
		stmt = (PreparedStatement) this.connection.prepareStatement("select * from produto where nome_produto='"+nome+"'");
		ResultSet rs= stmt.executeQuery();
		while(rs.next()){
			Produto produto = new Produto();	    			
			 produto.setId_produto(rs.getLong("id_produto"));
			 produto.setId_produtoComerciante(rs.getLong("id_produtoComerciante"));
			 produto.setTipo_produto(rs.getString("tipo_produto"));
			 produto.setTipo_preco_produto(rs.getInt("tipo_preco_produto"));
			 produto.setDescricao_produto(rs.getString("descricao_produto"));
			 produto.setPreco_normal_produto(rs.getDouble("preco_normal_produto"));
			 produto.setPreco_promocao_produto(rs.getDouble("preco_promocao_produto"));
			 produto.setNome_produto(rs.getString("nome_produto"));
			 produto.setImagem_produto(rs.getString("imagem_produto"));
			
			 produtos.add(produto);
			
		}
		rs.close();
		stmt.close();
		
		
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	
	   try {
			connection.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	return (produtos == null ? null : produtos);
		
}


public String getPageComerciante(long id_prod){
	String page="";
	
	/*SELECT a.pagina FROM tb_pagina a , tb_usuario_comerciante c, produto p 
	WHERE p.id_produto = 1
	and p.id_produtoComerciante = c.idUsuarioComerciante
	and c.idPagina = a.id_pagina*/
      	PreparedStatement stmt;
    		try {
    			stmt = (PreparedStatement) this.connection.prepareStatement("select a.pagina from tb_pagina a , tb_usuario_comerciante c, produto p  where p.id_produto='"+id_prod+"'"
    					+ " and p.id_produtoComerciante = c.idUsuarioComerciante"
    					+ " and c.idPagina = a.id_pagina");
    			ResultSet rs= stmt.executeQuery();
    			
    			while(rs.next()){
    			     
    			    
    			     page = rs.getString("pagina");
    			
    		          //return produto;
    			     
    		        }
    			
    			stmt.close();
    			rs.close();
    			
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}      	
      	
    		try {
				connection.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	return page;
}


	public int qtdProdutos(){
	
	    
	 	PreparedStatement stmt;
		try {
			stmt = (PreparedStatement) this.connection.prepareStatement("select count(*) as qtd from produto where id_produtoComerciante="+1);
			ResultSet rs= stmt.executeQuery();
			while(rs.next()) {  
				System.out.print(rs.getInt("qtd"));
				 return rs.getInt("qtd"); 
				                }  
		
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}      	
	
	return 1;
	}
	
	public List<Produto> getProdbyPagina(String perfil_pagina){
      	
		ArrayList<Produto> produtos = new ArrayList<>();	
		
		try{
					    	
	    	PreparedStatement stmt;	    		
			stmt = (PreparedStatement) this.connection.prepareStatement("select * from produto a, tb_usuario_comerciante b, tb_pagina c"+
					" where b.idPagina = c.id_pagina "+
					" AND c.pagina='"+perfil_pagina+"'"+
					" AND a.id_produtoComerciante=idUsuarioComerciante");
			ResultSet rs= stmt.executeQuery();
			while(rs.next()){
				Produto produto = new Produto();	    			
				 produto.setId_produto(rs.getLong("id_produto"));
				 produto.setId_produtoComerciante(rs.getLong("id_produtoComerciante"));
				 produto.setTipo_produto(rs.getString("tipo_produto"));
				 produto.setTipo_preco_produto(rs.getInt("tipo_preco_produto"));
				 produto.setDescricao_produto(rs.getString("descricao_produto"));
				 produto.setPreco_normal_produto(rs.getDouble("preco_normal_produto"));
				 produto.setPreco_promocao_produto(rs.getDouble("preco_promocao_produto"));
				 produto.setNome_produto(rs.getString("nome_produto"));
				 produto.setImagem_produto(rs.getString("imagem_produto"));
				
				 produtos.add(produto);
				
			}
			rs.close();
			stmt.close();
			
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		try {
			connection.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return (produtos == null ? null : produtos);
			
	}

	 public void updateImgProd(String img , int idproduto) {
	    	
	    	//if(isLoginEqual(usuario)==false){
		    String sql = "update produto set imagem_produto=? where id_produto='"+idproduto+"'";
		           
		

		    try {
		        // prepared statement para inserção
		        PreparedStatement stmt = (PreparedStatement) connection.prepareStatement(sql);

		        // seta os valores

		        stmt.setString(1,img);
		       
		  
		   

		        // executa
		        stmt.execute();
		        System.out.print("Pagina add com sucesso");
		        stmt.close();
		    } catch (SQLException e) {
		        throw new RuntimeException(e);
		    }
	    
		}
	 
	 public void updateProd(Produto produto) {
	    	
	    	//if(isLoginEqual(usuario)==false){
		    String sql = "update produto set tipo_produto=?,tipo_preco_produto=?,descricao_produto=?,preco_normal_produto=?,preco_promocao_produto=?,nome_produto=? where id_produto='"+produto.getId_produto()+"'";
		           
		

		    try {
		        // prepared statement para inserção
		        PreparedStatement stmt = (PreparedStatement) connection.prepareStatement(sql);

		        // seta os valores

		        stmt.setString(1,produto.getTipo_produto());
		        stmt.setInt(2,produto.getTipo_preco_produto());		        
		        stmt.setString(3,produto.getDescricao_produto());
		        stmt.setDouble(4,produto.getPreco_normal_produto());
		        stmt.setDouble(5,produto.getPreco_promocao_produto());
		        stmt.setString(6,produto.getNome_produto());
		       
		  
		   

		        // executa
		        stmt.execute();
		        System.out.print("Pagina add com sucesso");
		        stmt.close();
		        connection.close();
		    } catch (SQLException e) {
		        throw new RuntimeException(e);
		    }
	    
		}
	 
	 public void removerProduto(long id_produto){
		 
			//if(isLoginEqual(usuario)==false){
		    String sql = "delete from produto where id_produto='"+id_produto+"'";
		           
		

		    try {
		        // prepared statement para inserção
		        PreparedStatement stmt = (PreparedStatement) connection.prepareStatement(sql);

		        // seta os valores

		     
	

		        // executa
		        stmt.execute();
		        System.out.print("Pagina add com sucesso");
		        stmt.close();
		        connection.close();
		    } catch (SQLException e) {
		        throw new RuntimeException(e);
		    }
		 
		 
		 
		 
	 }
	
}
